package com.trafficsys.modules.loginAndRegister.service.impl;

import com.trafficsys.modules.entity.Driver;
import com.trafficsys.modules.entity.IdCard;
import com.trafficsys.modules.entity.Police;
import com.trafficsys.modules.loginAndRegister.dao.DriveCardDao;
import com.trafficsys.modules.loginAndRegister.dao.DriverDao;
import com.trafficsys.modules.loginAndRegister.dao.IdCardDao;
import com.trafficsys.modules.loginAndRegister.dao.PoliceDao;
import com.trafficsys.modules.loginAndRegister.service.CommonService;
import com.trafficsys.modules.loginAndRegister.util.SmsSend;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;

import java.sql.Timestamp;
import java.util.Date;
import java.util.HashMap;
import java.util.Random;
import java.util.concurrent.TimeUnit;

/**
 * @Author Zhao Bin
 * @Date 2021/9/28 13:06
 * @Version 1.0
 */
@Service
public class CommonServiceImpl implements CommonService {
    @Autowired
    DriverDao driverDao;
    @Autowired
    IdCardDao idCardDao;
    @Autowired
    PoliceDao policeDao;
    @Autowired
    SmsSend smsSend;
    @Autowired
    private StringRedisTemplate redisTemplate;
    /*********************************************   以下公用功能  *********************************************************
     * 添加身份证方法   公用功能
     * @param idCard
     * @return
     */
    @Override
    public HashMap<String, Object> addIdCard(IdCard idCard) {
        HashMap<String,Object> map= new HashMap<>();
        //设置身份证有效期
        Date endDate=new Date();
        endDate.setYear(endDate.getYear()+10);//有效期为10年
        Timestamp validPeriod=new Timestamp(endDate.getTime());
        idCard.setValidity(validPeriod);
        int n=0;
        try{
            n=idCardDao.insert(idCard);
        }catch (Exception e){
            e.printStackTrace();
            map.put("info","该身份证已被注册过");
            return map;
        }
        if(n>=1){
            map.put("info","添加成功");
        }else{
            map.put("info","添加失败");
        }
        return map;
    }

    /**
     * 发送手机验证码   公用功能
     */
    @Override
    public HashMap<String, Object> sendMessage(String phone) {
        HashMap<String,Object> map=new HashMap<>();
        //生成4位随机
        Random rd = new Random();
        int code = rd.nextInt(10000);
//        map=smsSend.send(phone,Integer.toString(code));
//        if(map.get("info").equals("短信发送成功")){
//            //存入redis  phone为键  code为值    5分钟后失效
//            redisTemplate.opsForValue().set(phone,code+"",5, TimeUnit.MINUTES);
//            //返回code到前端
//
//        }
        map.put("info","短信发送成功");
        map.put("code",code+"");
        return map;
    }
}
